﻿// 889. 满足条件的01序列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
https://www.acwing.com/problem/content/891/

给定 n 个 0 和 n 个 1，它们将按照某种顺序排成长度为 2n 的序列，求它们能排列成的所有序列中，
能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有多少个。

输出的答案对 109+7 取模。

输入格式
共一行，包含整数 n。

输出格式
共一行，包含一个整数，表示答案。

数据范围
1≤n≤105
输入样例：
3
输出样例：
5
*/

//C n 2n /(n+1)  卡特兰数

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>


using namespace std;

const int N = 200010;
const int MOD = 1000000000 + 7;


long long fact[N];
long long infact[N];

//C n 2n /(n+1)

long long qmi(long long a, long long m, long long MOD) {
	long long ret = 1;
	while (m != 0) {
		if (m & 1) {
			ret *= a;  ret %= MOD;
		}
		m >>= 1;
		a *= a; a %= MOD;
	}

	return ret;
}

void init() {
	fact[0] = 1;
	infact[0] = 1;
	for (int i = 1; i < N; i++) {
		fact[i] = fact[i - 1] * i % MOD;;
		infact[i] = infact[i - 1] * qmi(i, MOD - 2, MOD) % MOD;
	}
}

long long solve(int a,int b) {
	return  fact[a] * infact[a - b] % MOD * infact[b]  % MOD ;
}

int main()
{
	int n;
	cin >> n;
	init();
	
	cout << (solve(2 * n, n) - solve(2 * n, n - 1) +MOD) %MOD << endl;

	return 0;
}

 